package demo0;

import java.util.Arrays;

public class HugeInteger_0310 {
	public int[] integer;
    public HugeInteger_0310() {
        integer = new int[40];
    }
    public HugeInteger_0310(String s) {
        integer = new int[40];
        int len = s.length();
        if (len > 40) {
            System.out.println("超出范围，不符合要求");
            return;
        }
        for (int i = 0; i < len; i++) {
        	char c = s.charAt(len - i - 1);
        	if (c < '0' || c > '9') {
                System.out.println("超出范围，不符合要求");
                return;
            }
            integer[39 - i] = c - '0';
        }
    }
    public void print() {
        boolean isZero = true;
        for (int i = 0; i < integer.length; i++) {
            if (integer[i] != 0) isZero = false;
            if (!isZero) {
                System.out.print(integer[i]);
            }
        }
        if (isZero) System.out.print(0);
        System.out.println();
    }
    public HugeInteger_0310 add (HugeInteger_0310 p) {
        HugeInteger_0310 tmp = new HugeInteger_0310();
        int jw = 0; //进位数
        for (int i = 39; i > 0; i--) {
           int tmpnum  = this.integer[i] + p.integer[i] + jw;
           tmp.integer[i] = tmpnum % 10;
           jw = tmpnum / 10;
        }
        return tmp;
    }
//    public int length() {
//        int len = 0;
//        for (int i = 0; i < 40; i++) {
//            if (integer[i] != 0) {
//                len = i;
//                break;
//            }
//        }
//        return 40 - len;
//    }
//    public void copy(HugeInteger_0310 p) {
//        for (int i = 0; i < 40; i++) {
//            this.integer[i] = p.integer[i];
//        }
//    }
//    public HugeInteger_0310 mul(HugeInteger_0310 p) {
//        int longLen = this.length();
//        int shortLen = p.length();
//        HugeInteger_0310 longNum = this;
//        HugeInteger_0310 shortNum = p;
//        if (longLen < shortLen) {
//        	longLen = p.length();
//        	shortLen = this.length();
//        	longNum = p;
//        	shortNum = this;
//        }
//        HugeInteger_0310 tmp = new HugeInteger_0310();
//        for (int i = 39; i >= 40 - longLen; i--) {
//            int carry = 0;
//            int pos = i;
//            for (int j = 39; j >= 40 - shortLen - 1; j--) {
//                int product = tmp.integer[pos] + this.integer[i] * p.integer[j] + carry;
//                tmp.integer[pos] = product % 10;
//                carry = product / 10;
//                pos--;
//                if (pos < 0 && carry > 0) {
//                    // 处理最高位进位
//                    System.out.println("乘法结果超出范围");
//                    return new HugeInteger_0310();
//                }
//            }
//        }
//        return tmp;
//    }
}
